package net.qiqbframework.eventsourcing.dao;

import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import net.qiqbframework.persisthanding.dao.BasicEntityPo;

import java.time.LocalDateTime;

@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("qiqb_domain_event_record")
public class DomainEventRecordPo implements BasicEntityPo {
    /**
     * 记录ID
     */
    private String id;
    /**
     * 处理实例名称
     */
    private String instanceName;
    /**
     * 处理应用名称
     */
    private String applicationName;
    /**
     * 事件处理器描述
     */
    private String handlerDescription;

    /**
     * 结果状态:-1：待处理（如果有延迟处理的需求），0:处理中，1:处理成功，2:处理失败
     */
    private Integer resultState;
    /**
     * 处理结果
     */
    private String resultMessage;
    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 开始处理时间
     */
    private LocalDateTime beginTime;
    /**
     * 完成处理时间
     */
    private LocalDateTime endTime;

    ///////////以下是事件信息冗余
    /**
     * 事件 ID
     */
    private String eventId;

    /**
     * 事件足迹ID
     */
    private String eventTraceId;


    /**
     * 事件源。
     */
    private String eventSource;

    /**
     * 事件元数据
     */
    private String eventMetaData;

    /**
     * 事件实际载体
     */
    private byte[] eventPayload;
    /**
     * 事件领域事件类名称
     */
    private String eventPayloadType;

    /**
     * 事件聚合名称。默认是聚合类型
     */
    private String eventAggregateName;

    private String eventAggregateIdentifier;
    /**
     * 事件实际创建时间
     */
    private Long eventTimestamp;

    /**
     * 事件创建时间
     */
    private LocalDateTime eventCreateTime;

    /**
     * 事件序列号
     */
    private Long eventSequenceNumber;


}
